/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package server.negocio;

import java.sql.SQLException;
import server.dominio.ISesion;
import server.dominio.Sesion;
import server.excepciones.UsuarioIncorrectoException;

/**
 *
 * @author tpaxle
 */
public class Controlador_Login {
    private Fachada_Servidor fachada_basedats= null;
    private Controlador_Servidor c_servidor= null;

   
    public Controlador_Login(Controlador_Servidor c_servidor) {
        fachada_basedats= new Fachada_Servidor();
        this.c_servidor= c_servidor;
    }
     public ISesion login(String login, String password) throws SQLException, UsuarioIncorrectoException{

        //Se comprueba que el login y la password es correcto
        ISesion sesion = fachada_basedats.getlogin(login, password);
        /*Se comprueba si ya esta logueado. en caso de no producirse error
        controlador.usuarioyalogueado();
        Si es que si:
         *      controlador.eliminarusuario(keydelasesion)
         * Si no:
         *      controlador.nuevousuario(sesion);
         */
        if (usuarioyalogueado(login)) {
            c_servidor.eliminarlogin(login);
            //Una vez eliminado se inserta
        }
        nuevousuario(login, sesion);
        return sesion;
     }



     //Devuelve un boolean si existe usuarioyalogueado
     private boolean usuarioyalogueado(String login){
         return c_servidor.existelogin(login);
     }


    @SuppressWarnings("element-type-mismatch")
    private void nuevousuario(String login, ISesion sesion){
         long idSesion;
         //Buscamos un idSesion válido
         do{
             idSesion= (long)(Math.random()*Long.MAX_VALUE);
         }while(c_servidor.comprobaridSesion(idSesion));

         Sesion sesionaux= (Sesion) sesion;
         //Modificamos el idSesion que se va a devolver
         sesionaux.setId(idSesion);

         sesion= sesionaux;

         //Insertamos el nuevo usuario
         c_servidor.insertarusuario(login, sesionaux);
     }
}
